/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.modelo;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.*;

/**
 *
 * @author Gilberto
 */
@Entity
@Table(name = "ecf_movimento")
@NamedQueries({
    @NamedQuery(name = "Movimento.findAll", query = "SELECT m FROM Movimento m")})
public class Movimento implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "ID")
    private Integer id;
    @Basic(optional = false)
    @Column(name = "ID_GERENTE_SUPERVISOR")
    private int idGerenteSupervisor;
    @Column(name = "DATA_ABERTURA")
    @Temporal(TemporalType.DATE)
    private Date dataAbertura;
    @Column(name = "HORA_ABERTURA")
    private String horaAbertura;
    @Column(name = "DATA_FECHAMENTO")
    @Temporal(TemporalType.DATE)
    private Date dataFechamento;
    @Column(name = "HORA_FECHAMENTO")
    private String horaFechamento;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Column(name = "TOTAL_SUPRIMENTO")
    private BigDecimal totalSuprimento;
    @Column(name = "TOTAL_SANGRIA")
    private BigDecimal totalSangria;
    @Column(name = "TOTAL_NAO_FISCAL")
    private BigDecimal totalNaoFiscal;
    @Column(name = "TOTAL_VENDA")
    private BigDecimal totalVenda;
    @Column(name = "TOTAL_DESCONTO")
    private BigDecimal totalDesconto;
    @Column(name = "TOTAL_ACRESCIMO")
    private BigDecimal totalAcrescimo;
    @Column(name = "TOTAL_FINAL")
    private BigDecimal totalFinal;
    @Column(name = "TOTAL_RECEBIDO")
    private BigDecimal totalRecebido;
    @Column(name = "TOTAL_TROCO")
    private BigDecimal totalTroco;
    @Column(name = "TOTAL_CANCELADO")
    private BigDecimal totalCancelado;
    @Basic(optional = false)
    @Column(name = "STATUS_MOVIMENTO")
    private char statusMovimento;
    @Column(name = "SINCRONIZADO")
    private Character sincronizado;
    @JoinColumn(name = "ID_ECF_EMPRESA", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private Empresa idEcfEmpresa = new Empresa();
    @JoinColumn(name = "ID_ECF_IMPRESSORA", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private Impressora idEcfImpressora = new Impressora();
    @JoinColumn(name = "ID_ECF_TURNO", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private Turno idEcfTurno = new Turno();
    @JoinColumn(name = "ID_ECF_OPERADOR", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private Operador idEcfOperador = new Operador();
    @JoinColumn(name = "ID_ECF_CAIXA", referencedColumnName = "ID")
    @ManyToOne(optional = false)
    private Caixa idEcfCaixa = new Caixa();
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEcfMovimento")
    private List<Suprimento> suprimentoList = new ArrayList<>();;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEcfMovimento")
    private List<Sangria> sangriaList = new ArrayList<>();;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEcfMovimento")
    private List<DocumentosEmitidos> documentosEmitidosList = new ArrayList<>();;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEcfMovimento")
    private List<RecebimentoNaoFiscal> recebimentoNaoFiscalList = new ArrayList<>();;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "idEcfMovimento")
    private List<EcfVendaCabecalho> ecfVendaCabecalhoList = new ArrayList<>();;

    public Movimento() {
    }

    public Movimento(Integer id) {
        this.id = id;
    }

    public Movimento(Integer id, int idGerenteSupervisor, char statusMovimento) {
        this.id = id;
        this.idGerenteSupervisor = idGerenteSupervisor;
        this.statusMovimento = statusMovimento;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public int getIdGerenteSupervisor() {
        return idGerenteSupervisor;
    }

    public void setIdGerenteSupervisor(int idGerenteSupervisor) {
        this.idGerenteSupervisor = idGerenteSupervisor;
    }

    public Date getDataAbertura() {
        return dataAbertura;
    }

    public void setDataAbertura(Date dataAbertura) {
        this.dataAbertura = dataAbertura;
    }

    public String getHoraAbertura() {
        return horaAbertura;
    }

    public void setHoraAbertura(String horaAbertura) {
        this.horaAbertura = horaAbertura;
    }

    public Date getDataFechamento() {
        return dataFechamento;
    }

    public void setDataFechamento(Date dataFechamento) {
        this.dataFechamento = dataFechamento;
    }

    public String getHoraFechamento() {
        return horaFechamento;
    }

    public void setHoraFechamento(String horaFechamento) {
        this.horaFechamento = horaFechamento;
    }

    public BigDecimal getTotalSuprimento() {
        return totalSuprimento;
    }

    public void setTotalSuprimento(BigDecimal totalSuprimento) {
        this.totalSuprimento = totalSuprimento;
    }

    public BigDecimal getTotalSangria() {
        return totalSangria;
    }

    public void setTotalSangria(BigDecimal totalSangria) {
        this.totalSangria = totalSangria;
    }

    public BigDecimal getTotalNaoFiscal() {
        return totalNaoFiscal;
    }

    public void setTotalNaoFiscal(BigDecimal totalNaoFiscal) {
        this.totalNaoFiscal = totalNaoFiscal;
    }

    public BigDecimal getTotalVenda() {
        return totalVenda;
    }

    public void setTotalVenda(BigDecimal totalVenda) {
        this.totalVenda = totalVenda;
    }

    public BigDecimal getTotalDesconto() {
        return totalDesconto;
    }

    public void setTotalDesconto(BigDecimal totalDesconto) {
        this.totalDesconto = totalDesconto;
    }

    public BigDecimal getTotalAcrescimo() {
        return totalAcrescimo;
    }

    public void setTotalAcrescimo(BigDecimal totalAcrescimo) {
        this.totalAcrescimo = totalAcrescimo;
    }

    public BigDecimal getTotalFinal() {
        return totalFinal;
    }

    public void setTotalFinal(BigDecimal totalFinal) {
        this.totalFinal = totalFinal;
    }

    public BigDecimal getTotalRecebido() {
        return totalRecebido;
    }

    public void setTotalRecebido(BigDecimal totalRecebido) {
        this.totalRecebido = totalRecebido;
    }

    public BigDecimal getTotalTroco() {
        return totalTroco;
    }

    public void setTotalTroco(BigDecimal totalTroco) {
        this.totalTroco = totalTroco;
    }

    public BigDecimal getTotalCancelado() {
        return totalCancelado;
    }

    public void setTotalCancelado(BigDecimal totalCancelado) {
        this.totalCancelado = totalCancelado;
    }

    public char getStatusMovimento() {
        return statusMovimento;
    }

    public void setStatusMovimento(char statusMovimento) {
        this.statusMovimento = statusMovimento;
    }

    public Character getSincronizado() {
        return sincronizado;
    }

    public void setSincronizado(Character sincronizado) {
        this.sincronizado = sincronizado;
    }

    public Empresa getIdEcfEmpresa() {
        return idEcfEmpresa;
    }

    public void setIdEcfEmpresa(Empresa idEcfEmpresa) {
        this.idEcfEmpresa = idEcfEmpresa;
    }

    public Impressora getIdEcfImpressora() {
        return idEcfImpressora;
    }

    public void setIdEcfImpressora(Impressora idEcfImpressora) {
        this.idEcfImpressora = idEcfImpressora;
    }

    public Turno getIdEcfTurno() {
        return idEcfTurno;
    }

    public void setIdEcfTurno(Turno idEcfTurno) {
        this.idEcfTurno = idEcfTurno;
    }

    public Operador getIdEcfOperador() {
        return idEcfOperador;
    }

    public void setIdEcfOperador(Operador idEcfOperador) {
        this.idEcfOperador = idEcfOperador;
    }

    public Caixa getIdEcfCaixa() {
        return idEcfCaixa;
    }

    public void setIdEcfCaixa(Caixa idEcfCaixa) {
        this.idEcfCaixa = idEcfCaixa;
    }

    public List<Suprimento> getSuprimentoList() {
        return suprimentoList;
    }

    public void setSuprimentoList(List<Suprimento> suprimentoList) {
        this.suprimentoList = suprimentoList;
    }

    public List<Sangria> getSangriaList() {
        return sangriaList;
    }

    public void setSangriaList(List<Sangria> sangriaList) {
        this.sangriaList = sangriaList;
    }

    public List<DocumentosEmitidos> getDocumentosEmitidosList() {
        return documentosEmitidosList;
    }

    public void setDocumentosEmitidosList(List<DocumentosEmitidos> documentosEmitidosList) {
        this.documentosEmitidosList = documentosEmitidosList;
    }

    public List<RecebimentoNaoFiscal> getRecebimentoNaoFiscalList() {
        return recebimentoNaoFiscalList;
    }

    public void setRecebimentoNaoFiscalList(List<RecebimentoNaoFiscal> recebimentoNaoFiscalList) {
        this.recebimentoNaoFiscalList = recebimentoNaoFiscalList;
    }

    public List<EcfVendaCabecalho> getEcfVendaCabecalhoList() {
        return ecfVendaCabecalhoList;
    }

    public void setEcfVendaCabecalhoList(List<EcfVendaCabecalho> ecfVendaCabecalhoList) {
        this.ecfVendaCabecalhoList = ecfVendaCabecalhoList;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Movimento)) {
            return false;
        }
        Movimento other = (Movimento) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.classes.Movimento[ id=" + id + " ]";
    }
    
}
